#pragma once

#include "QSPrerequisites.h"
#include "QSSystems.h"

namespace OIS
{
	class InputManager;
	class Keyboard;
	class Mouse;
}

namespace QS
{
	class OISInputSystem : public InputSystem, public OIS::MouseListener, public OIS::KeyListener
	{
	public:
		OISInputSystem(Engine* e) : InputSystem(e),
			mInputManager(0), mKeyboard(0), mMouse(0){}			

		virtual ~OISInputSystem(){ }

		virtual void initialize();
		virtual void shutdown();
		virtual void update();

		virtual bool mouseMoved( const OIS::MouseEvent& arg);		
		virtual bool mousePressed( const OIS::MouseEvent&, OIS::MouseButtonID id );		
		virtual bool mouseReleased( const OIS::MouseEvent&, OIS::MouseButtonID id );
		virtual bool keyPressed( const OIS::KeyEvent &arg );
		virtual bool keyReleased( const OIS::KeyEvent &arg );
		
	private:
		OIS::InputManager* mInputManager;
		OIS::Keyboard* mKeyboard;
		OIS::Mouse* mMouse;
	};
}